Skip to main content

使用配方设置值

使用配方同时更改或读取控制器上一组特定变量(配方定义)的配方值。

您可以在中定义菜谱的基本设置,例如位置和格式。 食谱经理 目的。插入任意数量的 食谱定义 在该物体下方。

您可以将配方保存到文件或直接从文件写入 PLC。

可以通过以下方式调用菜谱 CODESYS 开发接口、可视化元素或应用程序。

在远程设备上使用食谱

如果涉及数据源变量并且配置了数据源交换,则配方中的变量值将自动传输到另一个控制器或从另一个控制器传输。读取和写入同步发生。这意味着配方定义中配置的所有变量都会同时更新。

读完或写完后,就可以使用调用 g_RecipeManager.LastError 检查转账是否成功(g_RecipeManager.LastError = 0)。

调用配方命令 CODESYS 用户界面

开发接口 CODESYS 提供用于生成配方以及在线模式下读/写的命令。

以编程方式或在可视化中调用配方命令

运行时,可以在应用程序中调用配方定义和配方命令。为此,您可以使用以下方法在代码中实现写入、读取或监视配方定义的过程: RecipeManCommands 功能块从 RecipeManagement 图书馆。

有关更多信息,请参阅: RecipeMan 命令 (FB)

在可视化中,配方命令的调用是通过使用 输入配置(执行命令) 用于可视化元素。通过这样做,可视化用户可以控制配方命令的执行。

提示

在初始化过程中,配方管理读取配方定义中定义的变量值。此操作发生在应用程序的初始化阶段结束时。此时,应用程序变量的所有初始值都已设置。执行此操作是为了正确初始化配方文件中的缺失值。

浮点数的特殊功能

对于类型变量 REAL 或者 LREAL,区分该值是否完全可转换。

  • 如果可以精确地转换该值,则仅将数值保存在配方文件中。

  • 如果无法进行精确转换,则会在配方文件中的数值旁边写入十六进制编码字符串。这应该具有这样的效果:不可转换的浮点数也返回相同的值。

可以使用以下命令禁用此功能 RECIPE_GENERATE_SIMPLE_STRINGREAL 编译器定义。

提示

在父应用程序的对象属性下 建造,你可以输入这个 RECIPE_GENERATE_SIMPLE_STRINGREAL 编译器定义在 编译器定义 选项。因此,不会存储任何十六进制编码的字符串。

有关更多信息,请参阅: 对话框:属性:构建

创建食谱

  1. 在设备树中,选择 应用 目的。

  2. 点击 项目→添加对象→配方管理器

    配方管理器已添加到设备树中。

  3. 在设备树中,单击 食谱经理 目的。

  4. 点击 项目 → 添加对象 → 配方定义

    配方定义 添加到配方管理器下方。

  5. 双击对象打开配方定义的编辑器。

  6. 双击下面的空白字段 多变的.指定要为其定义配方的变量的名称。您可以使用输入助手 (_cds_icon_button_threedots.png 按钮)为此。

  7. 点击 食谱 → 添加新食谱 并为新配方指定一个名称。

    具有新配方名称的列出现在编辑器中。

  8. 在此字段中输入此配方的变量值。

  9. 根据需要插入其他字段。

  10. 为配方选择一个变量值并单击 食谱→ 保存食谱.选择位置和文件名。

    配方以配方管理器中定义的格式保存。

从文件加载菜谱

要求:应用程序中提供了配方管理器。在配方定义中,有一个 我的记录 具有可变值的配方。一个 myRec.txt 配方文件位于文件系统上,包含此配方的条目。

配方文件示例:

PLC_PRG.bVar:=0
PLC_PRG.iVar:=2
PLC_PRG.dwVar:=35232
PLC_PRG.stVar:='first'
PLC_PRG.wstVar:='123443245'
  1. 双击 配方定义 设备树中的对象以打开表格编辑器以定义各个配方。

    你看到 myRec 此配方的当前值列。

  2. 编辑 myRec.txt 在外部文本编辑器中创建文件并将变量值替换为要加载到配方定义中的其他值 CODESYS.保存文件。

  3. 在配方定义中,单击 我的记录 列并在上下文菜单中单击 加载配方.

    再次登录时,会出现对话框提示,通知您可能需要执行在线更改。当您通过加载配方来更改配方变量的当前值时,需要进行在线更改。

  4. 点击 是的 关闭对话框并继续。选择 myRec.txt 从文件资源管理器加载文件。

    配方定义中的配方值根据文件中读取的值进行更新。

提示

如果您只想用新值覆盖单个配方变量,则在加载到配方文件之前删除其他变量的值。没有值定义的条目不会被读取,因此更新会使控制器和项目中的这些变量保持不变。

对于数据类型的值 REAL/LREAL,在某些情况下,十六进制值也会写入配方文件。这是必要的,以便在转换回来时恢复完全相同的值。在这种情况下,您可以更改十进制值并删除十六进制值。

控制器上的配方管理;内存使用情况

当你清除 PLC 中的配方管理 选项,配方管理器和配方定义将不使用 PLC 上的任何内存。

如果选择此选项,则会为配方管理器和所有配方定义生成代码,并且此代码存储在 PLC 中。所用内存的大小主要取决于 pf recipes 的数量及其变量,以及变量的数据类型。配方定义的字段是否填写也有影响。无法计算配方的内存使用量。它必须在需要的时候通过实验来确定。下表仅提供一些指导原则。

1. 带有 CODESYS Control Win V3 控制器的 CODESYS V3 SP6 的内存使用情况

代码大小(字节)

数据大小(字节)

总计(字节)

具有 100 个 INT 变量的配方定义

194406

79400

267352

具有 200 个 INT 变量的配方定义

238318

121284

459344

具有 300 个 INT 变量的配方定义

282230

163084

543856

具有 100 个 BOOL 变量的配方定义

192742

69884

343168

具有 200 个 BOOL 变量的配方定义

235446

101568

436872

具有 300 个 BOOL 变量的配方定义

278146

133284

510072

具有 100 个字符串变量的配方定义

203278

870084

1154000

具有 200 个字符串变量的配方定义

255570

1709784

2973296

具有 300 个字符串变量的配方定义

307886

2549484

2964112



从控制器加载配方值

您可以将控制器上的配方值应用于项目中的配方定义,即使这些定义已在项目中进行了修改。

要求: PLC 中的配方管理 是在配方管理器中选择的选项。

  1. 创建配方定义 RecDef1 在项目中,包含变量 PLC_PRG.ivarPLC_PRG.bvar.插入食谱 R1: 价值 PLC_PRG.ivar33;价值 PLC_PRG.bvarTRUE.

  2. 登录控制器并下载应用程序。

    配方文件 R1.RecDef1.txtrecipe 保存到控制器的默认目录 ($PlcLogic$)。

  3. 注销并添加另一个变量 PLC_PRG.dwvar 到项目中的配方定义。

  4. 编辑配方定义文件 R1.RecDef1.txtrecipe 在设备上通过更改值 PLC_PRG.ivar3334.

    此外,添加另一个食谱 R2 在设备上。为此,请复制 R1.RecDef1.txtrecipe 并将其重命名为 R2.RecDef1.txtrecipe.然后编辑此文件并更改配方值: PLC_PRG.ivar1, PLC_PRG.bvarFALSE.

    现在有两个食谱 R1R2 在设备上可用。在项目中,只有 R1,并且它还包含其他值 R1 在设备上。

  5. 通过在线更改登录控制器。

  6. 点击 从设备加载配方 从上下文菜单中。

    对话框提示通知您下次登录时执行命令可能会触发在线更改,并且运行时系统上的配方将覆盖当前配方定义的配方。

  7. 确认您要继续。

    对话框提示通知您 PLC_PRG.dwvar 加载到设备上无法从控制器产生值。

  8. 确认您要继续。

    的价值 PLC_PRG.ivar 在食谱中 R1 项目中的配方定义更改为 34.食谱 R2 与价值观 1FALSE 现在也列在配方定义中。 PLC_PRG.dwvar 保留在配方定义中。